<template>
	<view>
		<view :class="state === 0 ? 'pad-b-80' : ''">
			<PageDetails
				ref="pageDetails"
				:taskInfos="taskInfos"
				:dispatchResult="dispatchResult"
				:dispatchTel="dispatchTel"
				:cartInfos="cartInfos"
				:isAddRepair="false"
				@handleUpdateData="updateData"
				@handleAddRepairInfo="handleAddRepairInfo"
			/>
		</view>
		
		<view
			v-if="state === 0"
			class="pos-f bg-white flex align-center pad-x-10 shadow-type-7"
			style="left: 0; bottom: 0; right: 0; height: 60px;"
		>
			<u-button type="warning" class="mar-r-10" @click="handleShowRejected()">驳回</u-button>
			<u-button type="success" @click="handleAgree()">同意</u-button>
		</view>
		
		<!-- 驳回 -->
		<CustomPopUp
			title="驳回"
			:show="bohui.show"
		>
			<view slot="content" class="pad-10">
				<view>
					<u--textarea v-model="bohui.reason" placeholder="请输入驳回原因"></u--textarea>
				</view>
				
				<view class="flex align-center justify-end mar-t-20">
					<u-button class="mar-r-10" @click.native.stop="handleCloseRejected()">取消</u-button>
					<u-button type="primary" @click.native.stop="handleRejected()">确定</u-button>
				</view>
			</view>
		</CustomPopUp>
	</view>
</template>

<script>
	import PageDetails from '@/components/PageDetails/index'
	import CustomPopUp from '@/components/CustomPopUp/index'
	import Utils from '@/utils/utils'
	import Settings from '@/utils/settings'
	
	import { mapState } from 'vuex'
	import { checkLogin, getSubstring, getStaticUrl } from '@/utils/lib'
	import { getAttachmentInfo } from '@/apis/applyTask'
	import { getPendingReviewDetails, getReviewedDetails, getTaskDetails } from '@/apis/auditsManage/auditsManage'
	
	export default {
		components: {
			CustomPopUp,
			PageDetails,
		},
		
		computed: {
			...mapState({
				token: state => state.user.token,
				longitude: state => state.user.longitude,
				latitude: state => state.user.latitude,
				textMsgList: state => state.repair.textMsgList,
				pictureList: state => state.repair.pictureList,
				voiceList: state => state.repair.voiceList,
				videoList: state => state.repair.videoList,
				repairList: state => state.repair.repairList,
				classifyList: state => state.repair.classifyList,
			}),
		},
		
		data() {
			return {
				// 标签状态：0 待完成，1 已完成，2 已驳回，3 待审核
				// 这个和后台接口的状态可能不一致，需要自行判断，因为后台接口给的状态有点乱
				state: 0,
				RepairTaskId: null, // 任务详情id，用来查询任务详情
				RepairOrderId: null, // 维修详情id，用来查询维修详情
				taskInfos: [], // 任务信息
				cartInfos: [], // 车辆信息
				
				// 派工结果
				dispatchResult: '',
				dispatchTel: '',
				auditor: '',
				
				// 驳回
				bohui: {
					show: false,
					reason: '',
				},
			}
		},
		
		onShow() {
			checkLogin()
		},
		
		onLoad(options) {
			// 设置页面传过来的参数
			this.state = parseInt(options.state)
			this.RepairTaskId = options.RepairTaskId
			this.RepairOrderId = options.RepairOrderId
		},
		
		mounted() {
			this.initComponent() // 初始化组件
			this.findOrderDetails() // 查询订单详情
		},
		
		onUnload() {
			// 页面卸载后，重置一些状态管理中的数据
			this.$store.commit('repair/setDescInfo', { type: 1, data: [] })
			this.$store.commit('repair/setDescInfo', { type: 2, data: [] })
			this.$store.commit('repair/setDescInfo', { type: 3, data: [] })
			this.$store.commit('repair/setDescInfo', { type: 4, data: [] })
			this.$store.commit('repair/resetRepairComponent', [])
		},
		
		methods: {
			// 初始化组件
			initComponent() {
				// 任务信息
				this.taskInfos = [
					{
						prop: 'customerName', // 字段
						label: '客户名称', // 字段名称
						readonly: true, // 是否只读
						theme: 'table', // 组件主题
						placeholder: '', // 如果是输入框，文字提示内容设置
						value: '', // 绑定的值
						isBorder: false, // 是否显示边框
						border: '', // 只有 isBorder 为 true 才生效
						isEdit: false, // 是否可编辑
					}, {
						prop: 'contacts', // 字段
						label: '联系人', // 字段名称
						readonly: true, // 是否只读
						theme: 'table', // 组件主题
						placeholder: '', // 如果是输入框，文字提示内容设置
						value: '', // 绑定的值
						isBorder: false, // 是否显示边框
						border: '', // 只有 isBorder 为 true 才生效
						isEdit: false, // 是否可编辑
					}, {
						prop: 'wangdian', // 字段
						label: '网点名称', // 字段名称
						readonly: true, // 是否只读
						theme: 'table', // 组件主题
						placeholder: '', // 如果是输入框，文字提示内容设置
						value: '', // 绑定的值
						isBorder: false, // 是否显示边框
						border: '', // 只有 isBorder 为 true 才生效
					}, {
						prop: 'address', // 字段
						label: '维修地址', // 字段名称
						readonly: true, // 是否只读
						theme: 'table', // 组件主题
						placeholder: '', // 如果是输入框，文字提示内容设置
						value: '', // 绑定的值
						isBorder: false, // 是否显示边框
						border: '', // 只有 isBorder 为 true 才生效
						isRight: true, // 如果存在右侧图标，为 true ，反之 false
						rightIcon: 'icon-dizhi', // 右侧图标
						rightIconColor: '#3c9cff', // 右侧图标颜色
					}, {
						prop: 'mobile', // 字段
						label: '联系电话', // 字段名称
						readonly: true, // 是否只读
						theme: 'table', // 组件主题
						placeholder: '', // 如果是输入框，文字提示内容设置
						value: '', // 绑定的值
						isBorder: false, // 是否显示边框
						border: '', // 只有 isBorder 为 true 才生效
						isEdit: false, // 是否可编辑
					}, {
						prop: 'repairDesc', // 字段
						label: '故障描述', // 字段名称
						pageTitle: '附件列表', // 描述信息页面标题
						readonly: false, // 是否只读
						theme: 'table', // 组件主题
						placeholder: '', // 如果是输入框，文字提示内容设置
						value: '', // 绑定的值
						isBorder: false, // 是否显示边框
						border: '', // 只有 isBorder 为 true 才生效
						textMsgList: [], // 文字内容
						pictureList: [], // 图片内容
						voiceList: [], // 语音内容
						videoList: [], // 视频内容
						isEdit: false, // 是否可编辑
					}, {
						prop: 'applyPerson', // 字段
						label: '申请人', // 字段名称
						readonly: true, // 是否只读
						theme: 'table', // 组件主题
						placeholder: '', // 如果是输入框，文字提示内容设置
						value: '', // 绑定的值
						isBorder: false, // 是否显示边框
						border: '', // 只有 isBorder 为 true 才生效
						isRight: true, // 如果存在右侧图标，为 true ，反之 false
						rightIcon: 'icon-dianhua', // 右侧图标
						rightIconColor: '#3c9cff', // 右侧图标颜色
					}
				]
				
				// 车辆信息
				this.cartInfos = [
					{
						prop: 'cartNumber', // 字段
						label: '车号', // 字段名称
						readonly: true, // 是否只读
						theme: 'table', // 组件主题
						placeholder: '', // 如果是输入框，文字提示内容设置
						value: '', // 绑定的值
						isBorder: false, // 是否显示边框
						border: '', // 只有 isBorder 为 true 才生效
						isRight: false, // 如果存在右侧图标，为 true ，反之 false
						rightIcon: '', // 右侧图标
						rightIconColor: '', // 右侧图标颜色
						isEdit: false, // 是否可编辑
					}, {
						prop: 'cartType', // 字段
						label: '车型', // 字段名称
						readonly: true, // 是否只读
						theme: 'table', // 组件主题
						placeholder: '', // 如果是输入框，文字提示内容设置
						value: '', // 绑定的值
						isBorder: false, // 是否显示边框
						border: '', // 只有 isBorder 为 true 才生效
					}, {
						prop: 'materialDesc', // 字段
						label: '物料描述', // 字段名称
						pageTitle: '物料描述', // 描述信息页面标题
						readonly: true, // 是否只读
						theme: 'table', // 组件主题
						placeholder: '', // 如果是输入框，文字提示内容设置
						value: '', // 绑定的值
						isBorder: false, // 是否显示边框
						border: '', // 只有 isBorder 为 true 才生效
						isEdit: false, // 是否可编辑
					}, {
						prop: 'configInfo', // 字段
						label: '配置信息', // 字段名称
						readonly: false, // 是否只读
						theme: 'table', // 组件主题
						placeholder: '', // 如果是输入框，文字提示内容设置
						value: null, // 绑定的值
						isBorder: false, // 是否显示边框
						border: '', // 只有 isBorder 为 true 才生效
						isEdit: false, // 是否可编辑
					}, {
						prop: 'componentInfo', // 字段
						label: '关键零部件号', // 字段名称
						readonly: false, // 是否只读
						theme: 'table', // 组件主题
						placeholder: '', // 如果是输入框，文字提示内容设置
						value: null, // 绑定的值
						isBorder: false, // 是否显示边框
						border: '', // 只有 isBorder 为 true 才生效
						isEdit: false, // 是否可编辑
					}, {
						prop: 'buyerTime', // 字段
						label: '购买日期', // 字段名称
						readonly: true, // 是否只读
						theme: 'table', // 组件主题
						placeholder: '', // 如果是输入框，文字提示内容设置
						value: '', // 绑定的值
						isBorder: false, // 是否显示边框
						border: '', // 只有 isBorder 为 true 才生效
						isEdit: false, // 是否可编辑
					}, {
						prop: 'hourPrice', // 字段
						label: '小时计费', // 字段名称
						readonly: true, // 是否只读
						theme: 'table', // 组件主题
						placeholder: '', // 如果是输入框，文字提示内容设置
						value: '', // 绑定的值
						isBorder: false, // 是否显示边框
						border: '', // 只有 isBorder 为 true 才生效
						isEdit: false, // 是否可编辑
					}, {
						prop: 'sceneDetails', // 字段
						label: '现场详情', // 字段名称
						pageTitle: '故障描述', // 描述信息页面标题
						readonly: false, // 是否只读
						theme: 'table', // 组件主题
						placeholder: '', // 如果是输入框，文字提示内容设置
						value: '', // 绑定的值
						isBorder: false, // 是否显示边框
						border: '', // 只有 isBorder 为 true 才生效
						textMsgList: [], // 文字内容
						pictureList: [], // 图片内容
						voiceList: [], // 语音内容
						videoList: [], // 视频内容
						isEdit: this.state === 0 ? true : false, // 是否可编辑
					}, {
						prop: 'customerLevelInfo', // 字段
						label: '客户评级', // 字段名称
						readonly: false, // 是否只读
						theme: 'table', // 组件主题
						placeholder: '', // 如果是输入框，文字提示内容设置
						value: null, // 绑定的值
						isBorder: false, // 是否显示边框
						border: '', // 只有 isBorder 为 true 才生效
						isEdit: false, // 是否可编辑
					}
				]
			},
			
			// 查询订单详情数据，并回显
			async findOrderDetails() {
				let params1 = {
					id: this.RepairTaskId,
					token: this.token,
					location: this.longitude + ',' + this.latitude
				}
				
				let params2 = {
					id: this.RepairOrderId,
					token: this.token,
					location: this.longitude + ',' + this.latitude
				}
				
				Utils.loading('数据加载中...')
				
				let result1 = await getTaskDetails(params1)
				let result2 = null
				
				if (this.state === 0) {
					// 待审核
					result2 = await getPendingReviewDetails(params2)
				} else {
					// 已审核
					result2 = await getReviewedDetails(params2)
				}
				
				Promise.all([result1, result2]).then(res => {
					uni.hideLoading()
					let taskInfo = res[0].Result
					let info = res[1].Result
					let data = {
						RepairTaskId: info.RepairTaskId, // 维修单id
						customerName: taskInfo.Customer.CName, // 客户名称
						contacts: taskInfo.Customer.LinkMan, // 联系人
						wangdian: taskInfo.DotName, // 网点名称
						address: taskInfo.Customer.Address, // 维修地址
						mobile: taskInfo.Customer.Mobile, // 联系方式
						applyPerson: taskInfo.RepairWorker, // 申请人
						dispatchResult: taskInfo.AuditorName, // 派工结果（审核人姓名）
						dispatchTel: taskInfo.AuditorTel, // 审核人的手机号
						auditor: taskInfo.Auditor, // 审核人的 UserName
						cartNumber: taskInfo.RepairVehicle.VehicleNumber, // 车号
						cartType: taskInfo.RepairVehicle.VehicleType, // 车型
						repairDesc: {
							title: '故障描述',
							textMsgList: [],
							pictureList: [],
							voiceList: [],
							videoList: []
						},
						materialDesc: {
							title: '物料描述',
							textMsgList: [],
							pictureList: [],
							voiceList: [],
							videoList: []
						},
						configInfo: {
							label: '配置信息',
							isLink: true,
							list: [
								{ label: '工作环境', value: '鲲鹏果业' },
								{ label: '吨位', value: '10T' },
								{ label: '叉车车型', value: '陕西合力叉车' },
								{ label: '维修地址', value: 'G2系列deja脚手架基地' },
								{ label: '联系电话', value: '17325252526' },
								{ label: '故障描述', value: '车轮坏了' },
								{ label: '申请人', value: '张三' },
							]
						},
						componentInfo: {
							label: '关键零部件号',
							isLink: true,
							list: [
								{ label: '工作环境', value: '鲲鹏果业' },
								{ label: '吨位', value: '10T' },
								{ label: '叉车车型', value: '陕西合力叉车' },
								{ label: '维修地址', value: 'G2系列deja脚手架基地' },
								{ label: '联系电话', value: '17325252526' },
								{ label: '故障描述', value: '车轮坏了' },
								{ label: '申请人', value: '张三' },
							]
						},
						buyerTime: taskInfo.RepairVehicle.BuyDate, // 购买日期
						hourPrice: taskInfo.RepairVehicle.UsedHour !== null && taskInfo.RepairVehicle.UsedHour !== '' ? taskInfo.RepairVehicle.UsedHour.toString() : '', // 小时计费
						laborCost: taskInfo.TimeFee !== null && taskInfo.TimeFee !== '' ? taskInfo.TimeFee.toString() : '', // 工时计费
						customerLevelInfo: {
							label: '客户评级',
							isLink: true,
							list: [
								{ label: '工作环境', value: '鲲鹏果业' },
								{ label: '吨位', value: '10T' },
								{ label: '叉车车型', value: '陕西合力叉车' },
								{ label: '维修地址', value: 'G2系列deja脚手架基地' },
								{ label: '联系电话', value: '17325252526' },
								{ label: '故障描述', value: '车轮坏了' },
								{ label: '申请人', value: '张三' },
							]
						},
						sceneDetails: {
							title: '现场详情',
							textMsgList: [],
							pictureList: [],
							voiceList: [],
							videoList: []
						},
					}
					
					this.showData(data) // 回显数据
					this.showComponents(info.ItemList) // 回显故障件信息
				}).catch(err => {
					uni.hideLoading()
				})
			},
			
			// 查询附件信息
			findAttachmentInfo(id) {
				return new Promise((resolve) => {
					let params = {
						id,
						Token: this.token,
						location: this.longitude + ',' + this.latitude,
						typeEx: 0
					}
					
					getAttachmentInfo(params).then(res => {
						resolve(res)
					}).catch(err => {
						console.log(err)
					})
				})
			},
			
			// 回显附件（类似）信息
			async showAttachmentInfo(RepairOrderItemId) {
				let attachmentInfo = await this.findAttachmentInfo(RepairOrderItemId)
				let infos = attachmentInfo.Result
				let attachmentText = []
				let attachmentPicture = []
				let attachmentVoice = []
				let attachmentVideo = []
				
				if (infos && infos.length > 0) {
					let arr1 = infos.filter(j => j.AttachmentType === 1) // 获取文本内容
					let arr2 = infos.filter(j => j.AttachmentType === 2) // 获取图片内容
					let arr3 = infos.filter(j => j.AttachmentType === 4) // 获取音频内容
					let arr4 = infos.filter(j => j.AttachmentType === 8) // 获取视频内容
					
					// 如果存在文本，那么将文本添加到列表中
					if (arr1.length > 0) {
						arr1.forEach(item => {
							attachmentText.push({
								AttachmentId: item.AttachmentId , // 行 id 添加时传 0
								AttachmentType: item.AttachmentType, // 1 文本，2 图片，4 音频，8 视频
								Description: item.Description, // 文字或服务端返回的新文件名
								OriginalFileName: item.OriginalFileName, // 原始文件名
								Size: item.Size, // 文件大小
							})
						})
					}
					
					// 如果存在图片，那么将图片数据添加到列表中
					if (arr2.length > 0) {
						arr2.forEach(item => {
							attachmentPicture.push({
								AttachmentId: item.AttachmentId , // 行 id 添加时传 0
								AttachmentType: item.AttachmentType, // 1 文本，2 图片，4 音频，8 视频
								Description: getSubstring(getStaticUrl(item.Description), '/'), // 文字或服务端返回的新文件名
								OriginalFileName: item.OriginalFileName, // 原始文件名
								Size: item.Size, // 文件大小
								url: Settings.uploadIp + '/' + getStaticUrl(item.Description), // 用来回显数据的字段
							})
						})
					}
					
					// 如果存在语音，那么将语音添加到列表中
					if (arr3.length > 0) {
						arr3.forEach((item, index) => {
							attachmentVoice.push({
								// id: index + 1, // 记录当前语音位置
								AttachmentId: item.AttachmentId , // 行 id 添加时传 0
								AttachmentType: item.AttachmentType, // 1 文本，2 图片，4 音频，8 视频
								Description: getSubstring(getStaticUrl(item.Description), '/'), // 文字或服务端返回的新文件名
								OriginalFileName: item.OriginalFileName, // 原始文件名
								Size: item.Size, // 文件大小
								isPlayAudio: false, // 是否播报语音
								url: Settings.uploadIp + '/' + getStaticUrl(item.Description), // 用来回显数据的字段
							})
						})
					}
					
					// 如果存在视频，那么将视频添加到列表中
					if (arr4.length > 0) {
						arr4.forEach((item, index) => {
							attachmentVideo.push({
								// id: index + 1, // 记录当前视频位置
								AttachmentId: item.AttachmentId , // 行 id 添加时传 0
								AttachmentType: item.AttachmentType, // 1 文本，2 图片，4 音频，8 视频
								Description: getSubstring(getStaticUrl(item.Description), '/'), // 文字或服务端返回的新文件名
								OriginalFileName: item.OriginalFileName, // 原始文件名
								Size: item.Size, // 文件大小
								url: Settings.uploadIp + '/' + getStaticUrl(item.Description), // 用来回显数据的字段
							})
						})
					}
				}
				
				return {
					attachmentText,
					attachmentPicture,
					attachmentVoice,
					attachmentVideo
				}
			},
			
			// 回显数据，data：需要回显的数据集合
			async showData(data) {
				// 故障描述
				let info = await this.showAttachmentInfo(data.RepairTaskId)
				
				// 设置任务信息
				this.taskInfos.forEach(item => {
					for (let i in data) {
						if (
							item.prop === i &&
							item.prop !== 'repairDesc'
						) {
							item.value = data[i]
						}
						
						// 故障描述
						if (item.prop === 'repairDesc') {
							item.label = data.repairDesc.title
							item.textMsgList = info.attachmentText
							item.pictureList = info.attachmentPicture
							item.voiceList = info.attachmentVoice
							item.videoList = info.attachmentVideo
							item.isEdit = true
						}
					}
				})
				
				// 设置派工结果
				this.dispatchResult = data.dispatchResult
				this.dispatchTel = data.dispatchTel
				this.auditor = data.auditor
				
				// 设置车辆信息
				this.cartInfos.forEach(item => {
					for (let i in data) {
						if (
							item.prop === i &&
							item.prop !== 'materialDesc' &&
							item.prop !== 'configInfo' &&
							item.prop !== 'componentInfo' &&
							item.prop !== 'sceneDetails' &&
							item.prop !== 'customerLevelInfo'
						) {
							item.value = data[i]
						}
						
						// 物料描述
						if (item.prop === 'materialDesc') {
							item.label = data.materialDesc.title
							item.textMsgList = data.materialDesc.textMsgList
							item.pictureList = data.materialDesc.pictureList
							item.voiceList = data.materialDesc.voiceList
							item.videoList = data.materialDesc.videoList
						}
						
						// 配置信息
						if (item.prop === 'configInfo') {
							item.value = data.configInfo
						}
						
						// 关键零部件号详情
						if (item.prop === 'componentInfo') {
							item.value = data.componentInfo
						}
						
						// 现场详情
						if (item.prop === 'sceneDetails') {
							item.label = data.sceneDetails.title
							item.textMsgList = data.sceneDetails.textMsgList
							item.pictureList = data.sceneDetails.pictureList
							item.voiceList = data.sceneDetails.voiceList
							item.videoList = data.sceneDetails.videoList
						}
						
						// 客户评级信息
						if (item.prop === 'customerLevelInfo') {
							item.value = data.customerLevelInfo
						}
					}
				})
			},
			
			// 回显故障件列表
			showComponents(list) {
				let repairList = []
				
				list.forEach(async (item) => {
					// 回显维修类型数据
					let repairTypeName = ''
					
					if (item.RepairType !== null && item.RepairType !== '') {
						if (item.RepairType === 1) {
							repairTypeName = '非三包件'
						} else if (item.RepairType === 2) {
							repairTypeName = '股份三包'
						} else if (item.RepairType === 3) {
							repairTypeName = '网点三包'
						}
					}
					
					// 回显附件等数据信息
					let info = await this.showAttachmentInfo(item.RepairOrderItemId)
					let obj = {
						classifyTitle: '系统分类',
						classifyName: this.classifyList.filter(j => j.id == item.FaultClass)[0].label,
						// titleBg: '#3c9cff',
						// titleColor: '#ffffff',
						isExpand: true,
						isDel: true, // 是否可以删除
						repairOrderItemId: item.RepairOrderItemId, // 这个是从后台查询到的参数
						RepairOrderId: item.RepairOrderId, // 这个是从后台查询到的参数
						list: [
							{
								label: '名称',
								value: item.MaterialName,
								prop: 'name',
								theme: 'table',
								readonly: true,
								textMsgList: [],
								pictureList: [],
								voiceList: [],
								videoList: [],
							}, {
								label: '图件号',
								value: item.MaterialNum,
								prop: 'num',
								theme: 'table',
								readonly: true,
								placeholder: '',
								textMsgList: [],
								pictureList: [],
								voiceList: [],
								videoList: [],
							}, {
								label: '单价',
								value: item.Price,
								prop: 'unitPrice',
								theme: 'table',
								readonly: true,
								isBorder: false, // 是否显示边框
								border: '', // 只有 isBorder 为 true 才生效
								textMsgList: [],
								pictureList: [],
								voiceList: [],
								videoList: [],
							}, {
								label: '附件',
								value: '',
								prop: 'attachment',
								theme: 'table',
								pageTitle: '附件列表',
								readonly: false,
								textMsgList: info.attachmentText,
								pictureList: info.attachmentPicture,
								voiceList: info.attachmentVoice,
								videoList: info.attachmentVideo,
								isEdit: false,
							}, {
								label: '申请数量',
								value: item.ApplyAmount,
								prop: 'apply',
								theme: 'table',
								readonly: true,
								textMsgList: [],
								pictureList: [],
								voiceList: [],
								videoList: [] ,
							}, {
								label: '计划数量',
								value: item.PlanAmount,
								prop: 'demand',
								theme: 'table',
								readonly: true,
								textMsgList: [],
								pictureList: [],
								voiceList: [],
								videoList: [] ,
							}, {
								label: '单位',
								value: item.Unit,
								prop: 'unit',
								theme: 'table',
								readonly: true,
								textMsgList: [],
								pictureList: [],
								voiceList: [],
								videoList: [] ,
							}, {
								label: '维修类型',
								value: repairTypeName,
								prop: 'repairType',
								textMsgList: [],
								pictureList: [],
								voiceList: [],
								videoList: [],
								isEdit: false
							}, {
								label: '故障树备注',
								value: '',
								prop: 'repairTree',
								textMsgList: [],
								pictureList: [],
								voiceList: [],
								videoList: [],
								isEdit: false
							}
						]
					}
					
					// 如果维修类型是股份三包，回显对应的结算类型数据
					if (item.RepairType === 2) {
						let settlementTypeName = ''
						
						if (item.SettlementType === 1) {
							settlementTypeName = '实物结算'
						} else if (item.SettlementType === 2) {
							settlementTypeName = '货币结算'
						}
						
						obj.list.push({
							label: '结算类型',
							value: settlementTypeName,
							prop: 'settlementType',
							textMsgList: [],
							pictureList: [],
							voiceList: [],
							videoList: [],
							isEdit: false
						})
					}
					
					repairList.push(obj)
				})
				
				// 将故障件列表添加到页面中
				this.$store.commit('repair/resetRepairComponent', repairList)
			},
			
			// 修改详情中某个字段下的属性值
			// type：1 车辆信息
			// field：要修改哪个字段中的数据
			// attr：要修改哪个字段下的哪个属性值集合（因为可能是多个属性同时修改）
			// data：修改后的值
			updateData({ type, field, attrs, data}) {
				if (type === 1) {
					// 修改车辆信息中数据
					this.cartInfos.forEach(item => {
						if (item.prop === field) {
							let arr = attrs.split(',')
							
							arr.forEach(j => {
								item[j] = data[j]
							})
						}
					})
				}
			},
			
			// 添加故障件
			handleAddRepairInfo(data) {
				let obj = {
					classifyTitle: '系统分类',
					classifyName: data.classifyTitle,
					isExpand: true,
					list: [
						{
							label: '名称',
							value: data.name,
							prop: 'name',
							theme: 'table',
							readonly: true,
							textMsgList: [],
							pictureList: [],
							voiceList: [],
							videoList: [],
						}, {
							label: '图件号',
							value: data.num,
							prop: 'num',
							theme: 'table',
							readonly: true,
							textMsgList: [],
							pictureList: [],
							voiceList: [],
							videoList: [],
						}, {
							label: '单价',
							value: data.unitPrice,
							prop: 'unitPrice',
							theme: 'table',
							readonly: true,
							textMsgList: [],
							pictureList: [],
							voiceList: [],
							videoList: [],
						}, {
							label: '附件',
							value: '',
							prop: 'attachment',
							pageTitle: this.state === 0 ? '故障描述' : '附件列表',
							textMsgList: [],
							pictureList: [],
							voiceList: [],
							videoList: [],
						}, {
							label: '申请数量',
							value: data.apply,
							prop: 'apply',
							textMsgList: [],
							pictureList: [],
							voiceList: [],
							videoList: [],
						}, {
							label: '计划数量',
							value: data.demand,
							prop: 'demand',
							textMsgList: [],
							pictureList: [],
							voiceList: [],
							videoList: [],
						}, {
							label: '单位',
							value: data.unit,
							prop: 'unit',
							theme: 'table',
							readonly: true,
							textMsgList: [],
							pictureList: [],
							voiceList: [],
							videoList: [],
						}, {
							label: '维修类型',
							value: '',
							prop: 'repairType',
							textMsgList: [],
							pictureList: [],
							voiceList: [],
							videoList: [],
							isEdit: false,
						}, {
							label: '故障树备注',
							value: '',
							prop: 'repairTree',
							textMsgList: [],
							pictureList: [],
							voiceList: [],
							videoList: [],
							isEdit: false
						}
					]
				}
				
				// 将添加的故障件信息加入到状态管理中
				this.$store.commit('repair/setRepairComponent', obj)
			},
			
			// 显示驳回弹窗
			handleShowRejected() {
				this.bohui.show = true
			},
			
			// 驳回
			handleRejected() {
				if (!this.bohui.reason) {
					Utils.popUpMsg('none', '请填写驳回原因！', 1500)
					return
				}
				
				let params = this.getQuerys(2)
				
				params.Reason = this.bohui.reason
				params.RepairWorker = this.auditor
				
				Utils.loading('操作中...')
				
				handleOperate(params, this.token, this.longitude + ',' + this.latitude).then(res => {
					uni.hideLoading()
					Utils.popUpMsg('success', res.Message, 500)
					setTimeout(() => {
						uni.navigateBack({ delta: 1 })
					}, 500)
				}).catch(err => {
					uni.hideLoading()
					console.log(err)
				})
			},
			
			// 关闭驳回弹窗
			handleCloseRejected() {
				this.bohui.reason = ''
				this.bohui.show = false
			},
			
			// 获取操作时的参数
			getQuerys(State) {
				let params = {
					State,
					Id: this.RepairOrderId
				}
				
				return params
			},
			
			// 同意
			handleAgree() {
				Utils.loading('操作中...')
				
				handleOperate(this.getQuerys(1), this.token, this.longitude + ',' + this.latitude).then(res => {
					uni.hideLoading()
					Utils.popUpMsg('success', res.Message, 500)
					setTimeout(() => {
						uni.navigateBack({ delta: 1 })
					}, 500)
				}).catch(err => {
					uni.hideLoading()
					console.log(err)
				})
			},
		}
	}
</script>

<style>

</style>
